/**
	License:		Artistic license 2.0 (see license.txt, also available online at http://www.perlfoundation.org/artistic_license_2_0)
	Authors:		OrbitalLab (http://www.orbitallab.ru/moonglide/), 2007-2009

	File:			IOS.d
	Description:	interface with basic os routines for operating system wrapper classes
	Date:			20.11.2007 by Digited
*/
module moonglide.os.IOS;

public import
	moonglide.math.MoonMath,
	moonglide.core.Events,
	moonglide.io.LogSystem;

//==================================================================
/// Interface class for instancing with different operation systems' support
//==================================================================
interface IOS : IEventSender
{
	/// subj
	bool createPlatformWindow( inout Size2ui dimensions, bool fullscreen, char[] name );
	/// subj, used for fullscreen
	bool changeScreenResolution( uint width, uint height, ubyte bpp, bool fullscreen, ushort RefreshFrequency );

	void freezeCursor( bool freeze );

	void setWindowCaption( char[] caption, bool store = true );
	char[] getWindowCaption();

	void checkKeyStates();
	bool getKeyState( uint index );

	bool runLoop();		/// run system loop once
	void shutdown();	/// shutdown stuff
};
